#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "cabecera.h"


int compruebaExistencias(char* libreria, char* nombreLibro){
	FILE* fichero;
	int existe = 0;
	struct libro aux;

	fichero = fopen(libreria, "rb");
	while(fread(&aux, sizeof(struct libro), 1, fichero) == 1)
	{
		if(strcmp(aux.titulo, nombreLibro) == 0){
			existe = 1;
		}
	}
	fclose(fichero);
	return existe;
}

int existeLibreria(char* libreria){
	FILE* fichero;

	if((fichero = fopen(libreria,"rb")) == NULL ){
		fopen(libreria,"wb");
		return 0;
	}
	else
	{
		return 1;
	}
}

struct libro leeLibro(){
		struct libro aux;
		printf("Introduzca el titulo del libro: ");
		fgets(aux.titulo, 100, stdin);

		printf("Introduzca el autor del libro: ");
		fgets(aux.autor, 100, stdin);

		printf("Introduzca el numero de ejemplares: ");
		scanf("%f",&aux.unidades);

		printf("Introduzca el precio del libro: ");
		scanf("%f",&aux.precio);

		(aux).titulo[strlen(aux.titulo) - 1] = '\0';
		(aux).autor[strlen(aux.autor) - 1] = '\0';

		return aux;
}

void introduceLibro(char* libreria){
	FILE* fichero;
	struct libro aux;
	fichero = fopen(libreria, "ab");
	aux = leeLibro();
	fwrite(&aux, sizeof(struct libro), 1, fichero);
	fclose(fichero);
}

int cuentaLibros(char* libreria){
	FILE* fichero;
	int cuenta = 0;
	struct libro aux;
	fichero = fopen(libreria, "rb");

	while(fread(&aux, sizeof(struct libro), 1, fichero) == 1){
		cuenta++;
	}
	return cuenta;
}

int vendeLibro(char* libreria, char* titulo){
	FILE* fichero;
	struct libro aux;
	int vendido = 0;

	fichero = fopen(libreria, "r+b");
	while(fread(&aux, sizeof(struct libro), 1, fichero) == 1){
		if(strcmp(titulo, aux.titulo) == 0){
			(aux.unidades)--;
			fseek(fichero, -1*sizeof(struct libro), SEEK_CUR);
			fwrite(&aux, sizeof(struct libro), 1 , fichero);
			vendido = 1;
		}
	}
	fclose(fichero);
	return vendido;
}

void borradoFisico(char* libreria){
	FILE *fichero, *faux;
	struct libro aux;
	fichero = fopen(libreria, "rb");
	faux = fopen("aux", "wb");

	while(fread(&aux, sizeof(struct libro), 1, fichero) == 1){
		if(aux.unidades != 0){
			fwrite(&aux, sizeof(struct libro), 1, faux);
		}
	} 
	fclose(fichero);
	fclose(faux);
	remove(libreria);
	rename("aux", libreria);
}

void listaLibros(char* libreria){
	FILE* fichero;
	int cuantosLibros = cuentaLibros(libreria);
	int i=0;
	struct libro aux;
	fichero = fopen(libreria, "rb");
	struct libro* libros = (struct libro*) malloc(sizeof(struct libro) * cuantosLibros);
	while(fread(&aux, sizeof(struct libro), 1, fichero) == 1){
		strcpy((*(libros+i)).titulo, aux.titulo);
		strcpy((*(libros+i)).autor, aux.autor);
		(*(libros+i)).precio = aux.precio;
		(*(libros+i)).unidades = aux.unidades;

		printf("\n\nLIBRO [%d]\n",i);
		printf("Titulo: %s\n", (*(libros+i)).titulo);
		printf("Autor: %s\n", (*(libros+i)).autor);
		printf("Precio: %.3f euros\n", (*(libros+i)).precio);
		printf("Unidades: %.0f\n", (*(libros+i)).unidades);
		i++;
	}
	fclose(fichero);
}